package com.sky.constant;

/**
 * 用户行为类型常量
 */
public class UserActionConstant {
    
    /**
     * 浏览行为
     * 权重：1分
     */
    public static final String VIEW = "VIEW";

    /**
     * 收藏行为
     * 权重：5分
     */
    public static final String COLLECT = "COLLECT";

    /**
     * 借阅行为
     * 权重：10分
     */
    public static final String BORROW = "BORROW";

    /**
     * 评分行为
     * 权重：3分
     */
    public static final String RATE = "RATE";

    /**
     * 行为类型字段最大长度
     */
    public static final int ACTION_TYPE_MAX_LENGTH = 10;

    /**
     * 获取行为对应的权重分数
     * @param actionType 行为类型
     * @return 权重分数
     */
    public static int getWeight(String actionType) {
        switch (actionType) {
            case VIEW:
                return 1;
            case COLLECT:
                return 5;
            case BORROW:
                return 10;
            case RATE:
                return 3;
            default:
                return 0;
        }
    }

    /**
     * 检查行为类型是否有效
     * @param actionType 行为类型
     * @return 是否有效
     */
    public static boolean isValidAction(String actionType) {
        return VIEW.equals(actionType) ||
               COLLECT.equals(actionType) ||
               BORROW.equals(actionType) ||
               RATE.equals(actionType);
    }

    /**
     * 验证行为类型长度是否合法
     * @param actionType 行为类型
     * @return 是否合法
     */
    public static boolean isValidLength(String actionType) {
        return actionType != null && actionType.length() <= ACTION_TYPE_MAX_LENGTH;
    }
} 